package com.ruoyi.tzai.service.impl;

import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import com.ruoyi.tzai.mapper.TTSEngineConfigMapper;
import com.ruoyi.tzai.domain.TTSEngineConfig;
import com.ruoyi.tzai.service.ITTSEngineConfigService;
import com.ruoyi.common.utils.DateUtils;

/**
 * TTS引擎配置Service业务层处理
 * 
 * @author tzai
 * @date 2025-10-27
 */
@Service
public class TTSEngineConfigServiceImpl implements ITTSEngineConfigService 
{
    @Autowired
    private TTSEngineConfigMapper ttsEngineConfigMapper;

    /**
     * 查询TTS引擎配置
     * 
     * @param engineId TTS引擎配置主键
     * @return TTS引擎配置
     */
    @Override
    public TTSEngineConfig selectTTSEngineConfigByEngineId(Long engineId)
    {
        return ttsEngineConfigMapper.selectTTSEngineConfigByEngineId(engineId);
    }

    /**
     * 根据引擎代码查询TTS引擎配置
     * 
     * @param engineCode 引擎代码
     * @return TTS引擎配置
     */
    @Override
    public TTSEngineConfig selectTTSEngineConfigByEngineCode(String engineCode)
    {
        return ttsEngineConfigMapper.selectTTSEngineConfigByEngineCode(engineCode);
    }

    /**
     * 查询默认TTS引擎配置
     * 
     * @return TTS引擎配置
     */
    @Override
    public TTSEngineConfig selectDefaultTTSEngineConfig()
    {
        return ttsEngineConfigMapper.selectDefaultTTSEngineConfig();
    }

    /**
     * 查询支持时间戳的TTS引擎配置列表
     * 
     * @return TTS引擎配置集合
     */
    @Override
    public List<TTSEngineConfig> selectTTSEngineConfigWithTimestamp()
    {
        return ttsEngineConfigMapper.selectTTSEngineConfigWithTimestamp();
    }

    /**
     * 查询TTS引擎配置列表
     * 
     * @param ttsEngineConfig TTS引擎配置
     * @return TTS引擎配置
     */
    @Override
    public List<TTSEngineConfig> selectTTSEngineConfigList(TTSEngineConfig ttsEngineConfig)
    {
        return ttsEngineConfigMapper.selectTTSEngineConfigList(ttsEngineConfig);
    }

    /**
     * 新增TTS引擎配置
     * 
     * @param ttsEngineConfig TTS引擎配置
     * @return 结果
     */
    @Override
    @Transactional
    public int insertTTSEngineConfig(TTSEngineConfig ttsEngineConfig)
    {
        ttsEngineConfig.setCreateTime(DateUtils.getNowDate());
        // 默认状态：禁用
        if (ttsEngineConfig.getStatus() == null) {
            ttsEngineConfig.setStatus("1");
        }
        // 默认非默认引擎
        if (ttsEngineConfig.getIsDefault() == null) {
            ttsEngineConfig.setIsDefault("0");
        }
        return ttsEngineConfigMapper.insertTTSEngineConfig(ttsEngineConfig);
    }

    /**
     * 修改TTS引擎配置
     * 
     * @param ttsEngineConfig TTS引擎配置
     * @return 结果
     */
    @Override
    @Transactional
    public int updateTTSEngineConfig(TTSEngineConfig ttsEngineConfig)
    {
        ttsEngineConfig.setUpdateTime(DateUtils.getNowDate());
        return ttsEngineConfigMapper.updateTTSEngineConfig(ttsEngineConfig);
    }

    /**
     * 批量删除TTS引擎配置
     * 
     * @param engineIds 需要删除的TTS引擎配置主键
     * @return 结果
     */
    @Override
    @Transactional
    public int deleteTTSEngineConfigByEngineIds(Long[] engineIds)
    {
        return ttsEngineConfigMapper.deleteTTSEngineConfigByEngineIds(engineIds);
    }

    /**
     * 删除TTS引擎配置信息
     * 
     * @param engineId TTS引擎配置主键
     * @return 结果
     */
    @Override
    @Transactional
    public int deleteTTSEngineConfigByEngineId(Long engineId)
    {
        return ttsEngineConfigMapper.deleteTTSEngineConfigByEngineId(engineId);
    }

    /**
     * 设置为默认引擎
     * 
     * @param engineId TTS引擎配置主键
     * @return 结果
     */
    @Override
    @Transactional
    public int setAsDefault(Long engineId)
    {
        // 先将所有引擎设为非默认
        ttsEngineConfigMapper.clearAllDefaults();
        
        // 再设置当前引擎为默认
        TTSEngineConfig config = new TTSEngineConfig();
        config.setEngineId(engineId);
        config.setIsDefault("1");
        config.setUpdateTime(DateUtils.getNowDate());
        return ttsEngineConfigMapper.updateTTSEngineConfig(config);
    }

    /**
     * 测试引擎连接
     * 
     * @param engineId TTS引擎配置主键
     * @return 结果
     */
    @Override
    public boolean testConnection(Long engineId)
    {
        // TODO: 实现TTS引擎连接测试
        TTSEngineConfig config = ttsEngineConfigMapper.selectTTSEngineConfigByEngineId(engineId);
        if (config == null) {
            return false;
        }
        
        // 这里将来调用TTS服务进行测试
        // return ttsService.testConnection(config);
        
        return true;
    }

    /**
     * 试听测试
     * 
     * @param engineId TTS引擎配置主键
     * @param text 测试文本
     * @return 音频URL
     */
    @Override
    public String testAudio(Long engineId, String text)
    {
        // TODO: 实现TTS试听测试
        TTSEngineConfig config = ttsEngineConfigMapper.selectTTSEngineConfigByEngineId(engineId);
        if (config == null) {
            return null;
        }
        
        // 这里将来调用TTS服务生成测试音频
        // return ttsService.generateTestAudio(config, text);
        
        return null;
    }
}

